using System;
using System.Collections;
using System.Collections.Generic;
using kk.components.contracts;
using kk.messages.contracts.DataModel;
using LoungeRepo.Contracts;
using LoungeRepo.Core;

namespace kk.belegungsadapter.spike
{
    public class Belegungsadapter : IBelegungsAdapter
    {
        public void BelegungenZuVorstellung(Request<Vorstellung, IEnumerable<Platzposition>> request)
        {
            IEnumerable<Platzposition> Belegung =  LoadBelegung(request.RequestData);

            request.ResponsePin(Belegung);
        }

        public void ProcessReservierungsanfrage(Request<Reservierungsanfrage, string> request)
        {
            throw new NotImplementedException();
        }

        private IEnumerable<Platzposition> LoadBelegung(Vorstellung Vorstellung)
        {
            IEnumerable<Platzposition> Belegung;

            using(LoungeRepository BelegungRepo = new LoungeRepository("BelegungRepo"))
            {
                Belegung = BelegungRepo.Load<IEnumerable<Platzposition>>(BuildVorstellungID(Vorstellung));
            }

            return Belegung;
        }

        private string BuildVorstellungID(Vorstellung Vorstellung)
        {
            return Vorstellung.Titel + Vorstellung.Termin.Day + Vorstellung.Termin.Month + Vorstellung.Termin.Year + Vorstellung.Termin.Hour + Vorstellung.Termin.Minute + Vorstellung.Saal;
        }
    }
}